using Mt.Site.Application.Dto;
using Mt.Site.Application.Dto.Add;
using Mt.Site.Application.Navigation.Dto.MenuInfo;
using Mt.Site.Core.Navigations.MenuInfo;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MenuItemDto = Mt.Site.Core.Navigations.Values.MenuItemDto;

namespace Mt.Site.Application.Navigation
{
    public interface IMenuInfoAppService : IBackEndAppService
    {
        Task<List<MenuItemDto>> GetMenuTree(MenuIdDto input);

        Task<MenuDataConfigOutput> GetConfigForMenuData(MenuIdDto input);


        #region 编辑配置数据

        Task<MenuConfigOutput> GetConfigAsync(MenuIdDto input);
        Task<MenuConfigOutput> GetCustomConfigAsync(MenuIdDto input);
        Task<MenuConfigOutput> GetCustomDataAsync(MenuIdDto input);

        Task SetConfigAsync(SetMenuConfigInput input);
        Task SetCustomConfigAsync(SetMenuConfigInput input);
        Task SetCustomDataAsync(SetMenuConfigInput input);

        #endregion


        #region 图文

        Task<Dictionary<string, List<Dictionary<string, object>>>> GetAllImageTextAsync(MenuIdAndGuidInput input);

        Task<Dictionary<string, object>> GetListDataForEditAsync(GetImageTextForEditInput input);

        Task<List<Dictionary<string, object>>> GetListDataAsync(GetImageTextListInput input);

        Task<Dictionary<string, object>> GetSingleDataForEditAsync(GetImageTextForEditInput input);

        Task<Guid> CreateOrUpdateExtendedData(CreateOrUpdateImageTextInput input);

        Task<Guid> CreateOrUpdateImageTextAsync(CreateOrUpdateImageTextInput input);

        Task DeleteImageTextAsync(MenuAndIdInput<Guid> input);

        Task SetImageTextStatus(SetStatusWithMenuIdInput input);

        Task SwapImageTextSortNumber(SwapSortNumberWithMenuIdInput input);

        Task SetNewSorNumberForImageText(NewSortNumberWithMenuIdInput input);

        #endregion
    }
}
